﻿namespace ChessBot
{
    class ChessBoard
    {
        /// <summary>
        /// Creates a new chessboard
        /// </summary>
        public ChessBoard();

        /// <summary>
        /// Returns the piece at a given square
        /// </summary>
        /// <param name="square">The square to return the piece at</param>
        /// <returns>A piece (can be "Piece.None")</returns>
        public Piece GetPiece(ChessSquare square);

        /// <summary>
        /// Returns if a given move can be made on this chessboard
        /// </summary>
        /// <param name="move">A chessmove</param>
        /// <returns>False if the move is impossible for any reason</returns>
        public bool IsMoveLegal(ChessMove move);

        /// <summary>
        /// Changes the state of the chessboard by applying the supplied move
        /// </summary>
        /// <param name="move">A move to apply</param>
        public void MakeMove(ChessMove move);
    }


    class ChessSquare
    {
        /// <summary>
        /// Creates a new chessboard
        /// </summary>
        /// <param name="row">A value a-h to indicate the row</param>
        /// <param name="column">A value 1-8 to indicate the column</param>
        public ChessSquare(char row, UInt16 column);

        /// <summary>
        /// Returns the row of this square
        /// </summary>
        /// <returns>A value a-h</returns>
        public char GetRow();

        /// <summary>
        /// Returns the column of this square
        /// </summary>
        /// <returns>A value 1-8</returns>
        public UInt16 GetColumn();
    }


    /// <summary>
    /// A completely racist enum. Could be replaced with a bool
    /// </summary>
    public enum Colour
    {
        Black, White
    }

    /// <summary>
    /// A peice (or lack therof)
    /// </summary>
    public enum Piece
    {
        King, Queen, Biship, Knight, Rook, Pawn, None
    }
}
